package XML_.dom4j_;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.jupiter.api.Test;

import java.io.File;
import java.io.InputStream;
import java.util.List;

/**
 * @author 宋鑫宇
 * @version 1.0
 * 学会使用dom4j 解析xml文件中的数据
 * 1.导入dom4j框架包
 * 2.准备一个xml文件
 */
public class dom4jDemo01 {
    @Test
    public void parseXMLData() throws Exception {
        //1.创建一个dom4j的解析器对象
        SAXReader saxReader = new SAXReader();
        //2.把XML文件加载到内存中，成为一个Document文档对象
//        Document document = saxReader.read(new File("D:\\idea_WorkSpace\\javaweb\\src\\XML_\\hello_world.xml"));
        //通过模块名去定位,/是直接去src下寻找文件
        InputStream is = dom4jDemo01.class.getResourceAsStream("/hello_world.xml");
        Document document = saxReader.read(is);
        //3.获取根元素对象
        Element root = document.getRootElement();
        System.out.println(root.getName());

        //4.拿到根元素下的全部子元素对象
        List<Element> list = root.elements();
        for (Element element : list) {
            System.out.println(element.getName());
        }

        //拿到某个子元素,如果默认则提取第一个子元素对象
        Element element = root.element("student");
        System.out.println(element.getName());

        //提取第一个子元素对象
        System.out.println(element.elementText("hobby"));

        //根据元素获取属性值，获取name的属性值
        Element element1 = root.element("name");
        List<Attribute> attributes = element1.attributes();
        for (Attribute attribute : attributes) {
            System.out.println(attribute.getName() + "=" + attribute.getValue());
        }

    }
}
